package com.pqc.tbk.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {
	public static String SMTP_HOST = "smtp.126.com";
	public static String SMTP_PORT = "25";
	public static String SMTP_PROTOCOL = "SMTP";
	public static String SMTP_AUTH = "true";
	public static String AUTH_USER = "cjlu1111@126.com";
	public static String AUTH_PASSWORD = "asd123";
	public static String FROM_ADDRESS = "cjlu1111@126.com";
	public static String ACCEPT_MSG_ADDRESS = "cjlu2222@126.com";

	/**
	 * 发送email,目的地址为一个
	 * 
	 * @param to
	 *            目的email地址
	 * @param title
	 *            email的标题
	 * @param content
	 *            email的内容
	 * @return 返回是否发送成功
	 */
	public static boolean send(final String to, final String title,
			final String content) {
		boolean isSuccess = true;
		if ((to == null) || (title == null) || (content == null)) {
			return false;
		}
		final Properties property = new Properties();
		// 设置一些基本属性
		property.put("mail.smtp.host", SMTP_HOST);
		property.put("mail.smtp.port", SMTP_PORT);
		property.put("mail.smtp.protocol", SMTP_PROTOCOL);
		property.put("mail.smtp.auth", SMTP_AUTH);
		final MyAuthenticator myauth = new MyAuthenticator(AUTH_USER,
				AUTH_PASSWORD);
		// 获得发送邮件的会话
		final Session mailSession = Session
				.getDefaultInstance(property, myauth);
		// 生成发送的消息
		final Message message = new MimeMessage(mailSession);
		try {
			// 形成发送的mail地址
			final InternetAddress fromAddress = new InternetAddress(
					FROM_ADDRESS);
			message.setFrom(fromAddress);
			final InternetAddress toAddress = new InternetAddress(to);
			// 加入发送消息的目的地址addRecipients()两个重载函数
			message.addRecipient(Message.RecipientType.TO, toAddress);
			// 设置消息题
			message.setSubject(title);
			// 设置消息主题
			// message.setText(content);
			message.setContent(content, "text/html;charset=utf-8");
			// 保存
			message.saveChanges();
		} catch (final Exception e) {
			isSuccess = false;
			System.out.println(e.getMessage());
		}
		// 发送mail
		try {
			Transport.send(message,
					message.getRecipients(Message.RecipientType.TO));
		} catch (final Exception e) {
			isSuccess = false;
			System.out.println(e.getMessage());
		}
		return isSuccess;
	}

}

class MyAuthenticator extends Authenticator {
	private final String user;
	private final String password;

	public MyAuthenticator(final String user, final String password) {
		this.user = user;
		this.password = password;
	}

	@Override
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(user, password);
	}
}